import Foundation


protocol Flyable {
    func fly()
}

class TestExtension: NSObject {
    func test() {
        print("test")
    }
}

// 2. 可以遵循协议
extension TestExtension: Flyable {
    func fly() {
        print("extension fly")
    }
    
//    override func test() {
//        print("text extension")
//    }
    
    // 1. 不能重写原类的方法
    func test_extension() {
        print("text extension")
    }
}

struct MyPoint {
    var x: Int
    var y: Int
}

extension MyPoint {
    // 3. 可以有计算属性
    var isPositive: Bool {
        return x > 0 && y > 0
    }
}


public func demo_extension() {
    let a = TestExtension()
    a.test()
    a.test_extension()
}
